#ifndef VERIFICATION_H_INCLUDED
#define VERIFICATION_H_INCLUDED

#include "Terrain.h"
#include <string.h>
/**
    @fn verifMotRaccorde(const Terrain * pTer,const int *x,const int *y,const int tailleTab)
    @brief Fonction vérifiant si les lettres posées sont raccordés à d'autres présentes sur le Terrain
    @param pTer [IN] Pointeur sur une structure terrain
    @param x [IN] tableau contenant les ordonnées des lettres posées
    @param y [IN] tableau contenant les abscisses des lettres posées
    @param  tailleTab [IN] taille de x[] et y[] correspondant au nombre de lettres posées
    @return Renvoie 1 si le test réussie sinon 0
*/

int verifMotRaccorde(const Terrain * pTer,const int *x,const int *y,const int tailleTab);
/**
    @fn verifJoueEtoile(const int *x, const int *y, const int tailleTab)
    @brief Fonction vérifiant si on joue sur la case centrale du Terrain
    @param x [IN] tableau contenant les ordonnées des lettres posées
    @param y [IN] tableau contenant les abscisses des lettres posées
    @param  tailleTab [IN] taille de x[] et y[] correspondant au nombre de lettres posées
    @return Renvoie 1 si le test réussie sinon 0
*/

int verifJoueEtoile(const int *x, const int *y, const int tailleTab);
/**
    @fn verifFormeMot(const int *x,const int *y,const int tailleTab,const Terrain * pTer)
    @brief Fonction vérifiant si les lettres posées forment (au des emplacements) un mot
    @param pTer [IN] Pointeur sur une structure terrain
    @param x [IN] tableau contenant les ordonnées des lettres posées
    @param y [IN] tableau contenant les abscisses des lettres posées
    @param  tailleTab [IN] taille de x[] et y[] correspondant au nombre de lettres posées
    @return Renvoie 1 si le test réussie sinon 0
*/

int verifFormeMot(const int *x,const int *y,const int tailleTab,const Terrain * pTer);
/**
    @fn caseVortex(const int *x,const int *y,const int taille)
    @brief Fonction testant si la case vortex a été activé
    @param x [IN] tableau contenant les ordonnées des lettres posées
    @param y [IN] tableau contenant les abscisses des lettres posées
    @param  tailleTab [IN] taille de x[] et y[] correspondant au nombre de lettres posées
    @return Renvoie 1 si le mot est à la verticale, 2 si le mot est à l'horizontale et 0 si le test échoue
*/

unsigned int caseVortex(const int *x,const int *y,const int taille);
/**
    @fn  verifMotDico(const int *x, const int *y,const int res_formeMot,const Terrain * pTer, const int taille)
    @brief  fonction de verification  si  le mot forme par le joueur forme  un  mot
    @param pTer [IN] Pointeur sur une structure terrain
    @param x [IN] tableau contenant les ordonnées des lettres posées
    @param y [IN] tableau contenant les abscisses des lettres posées
    @param  taille [IN] taille de x[] et y[] correspondant au nombre de lettres posées
      @param res_formeMot[IN] entier représentant le résultat de #verifFormeMot
*/

unsigned int verifMotDico(const int *x, const int *y,const int res_formeMot,const Terrain * pTer, const int taille);

/**
    @fn rechercheMax( const int * tab, const int size)
    @brief  Fonction recherchant le maximun d'un tableau
    @param  tab [IN] un tableau d'entiers
    @param  size [IN] entier donnant la taile du tableau
*/
int rechercheMax( const int * tab, const int size);
/**
    @fn rechercheMin( const int * tab, const int size)
    @brief  Fonction recherchant le minimun d'un tableau
    @param  tab [IN] un tableau d'entiers
    @param  size [IN] entier donnant la taile du tableau
*/
int rechercheMin( const int * tab, const int size);


#endif
